home *** CD-ROM | disk | FTP | other *** search
/ JCSM Shareware Collection 1996 September / JCSM Shareware Collection (JCS Distribution) (September 1996).ISO / prgtools / euphor13.zip / SIEVE.BAS < prev    next >
BASIC Source File  |  1995-04-12  |  1KB  |  60 lines

  1. ' PRIME SIEVE BENCHMARK
  2.  
  3. DEFINT A-Z  'only 16-bit integers - runs faster than DEFLNG A-Z
  4.  
  5. DECLARE FUNCTION sieve()
  6.  
  7. 'Constants
  8. CONST BATCH = 50
  9. CONST BENCHTIME = 15
  10.  
  11. CONST TRUE = -1
  12. CONST FALSE = NOT TRUE
  13. CONST SIZE = 500
  14.  
  15. 'Global Variables
  16. DIM SHARED flags(SIZE)
  17.  
  18. PRINT "prime sieve benchmark ..."
  19.  
  20. cycles& = 0
  21. t# = TIMER
  22. WHILE TIMER < t# + BENCHTIME
  23.     FOR b = 1 TO BATCH
  24.     IF sieve <> 167 THEN
  25.         PRINT "whoops"
  26.     END IF
  27.     NEXT b
  28.     cycles& = cycles& + BATCH
  29. WEND
  30. t# = TIMER - t#
  31. PRINT USING "###.## sieves per second"; cycles& / t#
  32.  
  33. 'Display results
  34. PRINT "   2";
  35. FOR b = 1 TO SIZE
  36.     IF flags(b) THEN
  37.     PRINT USING "####"; b*2+1;
  38.     END IF
  39. NEXT b
  40.  
  41. SYSTEM
  42.  
  43. FUNCTION sieve
  44.     count = 0
  45.     FOR f = 1 TO SIZE
  46.     flags(f) = TRUE
  47.     NEXT f
  48.     FOR i = 1 TO SIZE
  49.     IF flags(i) THEN
  50.         prime = i + i + 1
  51.         FOR k = i + prime TO SIZE STEP prime
  52.         flags(k) = FALSE
  53.         NEXT k
  54.         count = count + 1
  55.     END IF
  56.     NEXT i
  57.     sieve = count
  58. END FUNCTION
  59.  
  60.